curl --request GET \
--url https://api.sophra.org/api/metricsimport requests
url = "https://api.sophra.org/api/metrics"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sophra.org/api/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sophra.org/api/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sophra.org/api/metrics"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sophra.org/api/metrics")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sophra.org/api/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body"# HELP sophra_api_requests_total Total number of API requests\n# TYPE sophra_api_requests_total counter\nsophra_api_requests_total{method=\"GET\",endpoint=\"/cortex/health\",status=\"200\"} 42\n\n# HELP sophra_api_request_duration_seconds API request duration in seconds\n# TYPE sophra_api_request_duration_seconds histogram\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.5\"} 0.123\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.9\"} 0.234\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.95\"} 0.345\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.99\"} 0.456\nsophra_api_request_duration_seconds_sum{method=\"GET\",endpoint=\"/cortex/health\"} 123.45\nsophra_api_request_duration_seconds_count{method=\"GET\",endpoint=\"/cortex/health\"} 100\n"{
"success": false,
"error": "Failed to generate metrics"
}Get API Metrics
Returns Prometheus-formatted metrics for all API endpoints. Tracks request counts, durations, sizes, errors, and active requests across normalized endpoint patterns. Metrics are exposed with appropriate labels for method, endpoint, and status.
Metrics exposed:
- sophra_api_requests_total: Counter of total API requests by method, endpoint, and status
- sophra_api_request_duration_seconds: Histogram of request durations by method and endpoint
- sophra_api_response_size_bytes: Histogram of response sizes by method and endpoint
- sophra_api_errors_total: Counter of API errors by method, endpoint, and error type
- sophra_api_active_requests: Gauge of currently active requests by method
curl --request GET \
--url https://api.sophra.org/api/metricsimport requests
url = "https://api.sophra.org/api/metrics"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sophra.org/api/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sophra.org/api/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sophra.org/api/metrics"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sophra.org/api/metrics")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sophra.org/api/metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body"# HELP sophra_api_requests_total Total number of API requests\n# TYPE sophra_api_requests_total counter\nsophra_api_requests_total{method=\"GET\",endpoint=\"/cortex/health\",status=\"200\"} 42\n\n# HELP sophra_api_request_duration_seconds API request duration in seconds\n# TYPE sophra_api_request_duration_seconds histogram\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.5\"} 0.123\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.9\"} 0.234\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.95\"} 0.345\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.99\"} 0.456\nsophra_api_request_duration_seconds_sum{method=\"GET\",endpoint=\"/cortex/health\"} 123.45\nsophra_api_request_duration_seconds_count{method=\"GET\",endpoint=\"/cortex/health\"} 100\n"{
"success": false,
"error": "Failed to generate metrics"
}Response
Metrics in Prometheus text format
The response is of type string.
"# HELP sophra_api_requests_total Total number of API requests\n# TYPE sophra_api_requests_total counter\nsophra_api_requests_total{method=\"GET\",endpoint=\"/cortex/health\",status=\"200\"} 42\n\n# HELP sophra_api_request_duration_seconds API request duration in seconds\n# TYPE sophra_api_request_duration_seconds histogram\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.5\"} 0.123\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.9\"} 0.234\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.95\"} 0.345\nsophra_api_request_duration_seconds{method=\"GET\",endpoint=\"/cortex/health\",quantile=\"0.99\"} 0.456\nsophra_api_request_duration_seconds_sum{method=\"GET\",endpoint=\"/cortex/health\"} 123.45\nsophra_api_request_duration_seconds_count{method=\"GET\",endpoint=\"/cortex/health\"} 100\n"

